namespace Crux.Core.Websockets;
/// <summary>
/// IWebSocketClientProxy
/// </summary>
public interface IWebSocketClientProxy
{
    /// <summary>
    ///
    /// </summary>
    /// <param name="groupName"></param>
    /// <returns></returns>
    IClientProxy Group(string groupName);
    /// <summary>
    ///
    /// </summary>
    /// <param name="userId"></param>
    /// <returns></returns>
    IClientProxy User(string userId);
    /// <summary>
    ///
    /// </summary>
    /// <param name="connectionId"></param>
    /// <returns></returns>
    IClientProxy Client(string connectionId);
    /// <summary>
    ///
    /// </summary>
    /// <param name="connectionIds"></param>
    /// <returns></returns>
    IClientProxy Clients(params string[] connectionIds);
    /// <summary>
    ///
    /// </summary>
    /// <param name="groupName"></param>
    /// <param name="exceptConnectionIds"></param>
    /// <returns></returns>
    IClientProxy GroupExcept(
        string groupName,
        params string[] exceptConnectionIds);
    /// <summary>
    ///
    /// </summary>
    /// <param name="userId"></param>
    /// <returns></returns>
    IClientProxy Users(params string[] userId);
    /// <summary>
    ///
    /// </summary>
    /// <param name="groupNames"></param>
    /// <returns></returns>
    IClientProxy Groups(params string[] groupNames);
    /// <summary>
    ///
    /// </summary>
    /// <returns></returns>
    IClientProxy All();
    /// <summary>
    ///
    /// </summary>
    /// <param name="exceptConnectionIds"></param>
    /// <returns></returns>
    IClientProxy AllExcept(params string[] exceptConnectionIds);
}